Apache Commons Collections লাইব্রেরি বিভিন্ন ইউটিলিটি এবং ক্লাস সরবরাহ করে যা ডেটা ম্যানিপুলেশন এবং সংগ্রহের কার্যকারিতা উন্নত করে। এর মধ্যে দুটি গুরুত্বপূর্ণ উপাদান হল Factory এবং Transformer। এই দুইটি সাধারণভাবে functional programming প্যাটার্নে ব্যবহৃত হয় এবং ডেটার উপর বিভিন্ন পরিবর্তন বা রূপান্তর করতে সহায়ক। Custom Factory এবং Transformer ব্যবহার করে আপনি আরও কাস্টমাইজড এবং ফ্লেক্সিবল ডেটা স্ট্রাকচার এবং ট্রান্সফরমেশন অপারেশন তৈরি করতে পারেন।
Factory একটি ডিজাইন প্যাটার্ন যা কোনো অবজেক্ট তৈরি করার জন্য ব্যবহৃত হয়। Apache Commons Collections এর মধ্যে Factory ইন্টারফেস রয়েছে, যা নতুন অবজেক্ট তৈরি করতে সহায়তা করে। আপনি একটি Custom Factory তৈরি করতে পারেন যাতে কোনো নির্দিষ্ট ধরনের অবজেক্ট তৈরি করা যায়।
Factory একটি জেনেরিক ইন্টারফেস যা একটি T টাইপের অবজেক্ট তৈরি করে। এর প্রধান মেথড হল:
public interface Factory<T> {
T create();
}
এখানে:
ধরা যাক, আপনি একটি String টাইপের অবজেক্ট তৈরি করতে একটি কাস্টম ফ্যাক্টরি তৈরি করতে চান।
import org.apache.commons.collections4.Factory;
import java.util.ArrayList;
public class CustomFactoryExample {
public static void main(String[] args) {
// Creating a custom factory to create new ArrayList objects
Factory<ArrayList<String>> factory = ArrayList::new;
// Using the factory to create a new ArrayList
ArrayList<String> list = factory.create();
// Adding some elements to the ArrayList
list.add("apple");
list.add("banana");
list.add("cherry");
// Print the list
System.out.println(list); // Output: [apple, banana, cherry]
}
}
এখানে:
আউটপুট:
[apple, banana, cherry]
এটি দেখাচ্ছে কিভাবে একটি Custom Factory ব্যবহার করে ArrayList তৈরি করা হলো এবং সেটির মধ্যে মান যোগ করা হলো।
Transformer একটি ইন্টারফেস যা একটি ইনপুট ভ্যালুর উপর রূপান্তর প্রক্রিয়া প্রয়োগ করে এবং একটি আউটপুট ভ্যালু প্রদান করে। Apache Commons Collections এ Transformer ইন্টারফেসটি functional programming প্যাটার্নে ব্যবহৃত হয় যেখানে একটি ইনপুট ডেটাকে নতুন আউটপুট ডেটায় রূপান্তর করা হয়।
Transformer একটি সাধারণ functional interface যা transform() মেথড সরবরাহ করে। এটি ইনপুট ভ্যালু নিয়ে সেটির উপর একটি নির্দিষ্ট রূপান্তর প্রক্রিয়া প্রয়োগ করে এবং আউটপুট ফেরত দেয়।
public interface Transformer<I, O> {
O transform(I input);
}
এখানে:
ধরা যাক, আমরা একটি List এর প্রতিটি স্ট্রিংকে বড় হাতের অক্ষরে রূপান্তর করতে চাই। এজন্য আমরা একটি কাস্টম Transformer তৈরি করব।
import org.apache.commons.collections4.Transformer;
import org.apache.commons.collections4.CollectionUtils;
import java.util.Arrays;
import java.util.List;
public class CustomTransformerExample {
public static void main(String[] args) {
// Create a list of strings
List<String> words = Arrays.asList("apple", "banana", "cherry");
// Create a custom transformer to convert strings to uppercase
Transformer<String, String> transformer = new Transformer<String, String>() {
@Override
public String transform(String input) {
return input.toUpperCase();
}
};
// Use CollectionUtils to transform the list using the transformer
List<String> transformedWords = (List<String>) CollectionUtils.collect(words, transformer);
// Print the transformed list
System.out.println(transformedWords); // Output: [APPLE, BANANA, CHERRY]
}
}
এখানে:
আউটপুট:
[APPLE, BANANA, CHERRY]
এটি দেখাচ্ছে কিভাবে একটি Transformer ব্যবহার করে একটি List এর সকল আইটেমকে বড় হাতের অক্ষরে রূপান্তর করা যায়।
Factory এবং Transformer একসাথে ব্যবহার করা যেতে পারে একটি কাস্টম ডেটা স্ট্রাকচার তৈরি করতে। উদাহরণস্বরূপ, আপনি একটি List তৈরি করতে পারেন, তারপর সেই তালিকার উপাদানগুলির উপর রূপান্তর প্রক্রিয়া প্রয়োগ করতে পারেন।
import org.apache.commons.collections4.Factory;
import org.apache.commons.collections4.Transformer;
import org.apache.commons.collections4.CollectionUtils;
import java.util.Arrays;
import java.util.List;
public class FactoryAndTransformerExample {
public static void main(String[] args) {
// Create a factory to create new ArrayList objects
Factory<List<String>> listFactory = ArrayList::new;
// Use the factory to create a new list
List<String> list = listFactory.create();
list.add("apple");
list.add("banana");
list.add("cherry");
// Create a transformer to convert strings to uppercase
Transformer<String, String> transformer = String::toUpperCase;
// Transform the list using the transformer
List<String> transformedList = (List<String>) CollectionUtils.collect(list, transformer);
// Print the transformed list
System.out.println(transformedList); // Output: [APPLE, BANANA, CHERRY]
}
}
এখানে:
আউটপুট:
[APPLE, BANANA, CHERRY]
এটি দেখায় কিভাবে Factory এবং Transformer একসাথে ব্যবহার করে একটি কাস্টম ডেটা স্ট্রাকচার তৈরি এবং রূপান্তর করা যায়।
Apache Commons Collections লাইব্রেরি Factory এবং Transformer ইন্টারফেস সরবরাহ করে যা object creation এবং functional transformation এর জন্য ব্যবহৃত হয়। Custom Factory এর মাধ্যমে আপনি ডেটার ধরন এবং কন্টেইনারের উপাদান তৈরির পদ্ধতি কাস্টমাইজ করতে পারেন, এবং Custom Transformer এর মাধ্যমে ডেটার উপর একটি নির্দিষ্ট রূপান্তর প্রক্রিয়া প্রয়োগ করতে পারেন। একসাথে ব্যবহার করে আপনি আরও শক্তিশালী এবং কাস্টমাইজড ডেটা স্ট্রাকচার এবং রূপান্তর প্রক্রিয়া তৈরি করতে পারেন, যা কোডের পুনঃব্যবহারযোগ্যতা, রক্ষণাবেক্ষণযোগ্যতা এবং কার্যক্ষমতা বাড়ায়।
common.read_more